linuxacfandomcom_ar-20200216-history
خادم الفويب أوبن سير/OpenSER
فى البداية قد لا يعلم الكثير عن تقنية نقل الصوت عبر بروتوكول الإنترنت أو Voice Over Internet Protocol ولذلك سأقوم بذكر مقدمة بسيطة عن ال Voip ولماذا نحتاج إلى إستخدام تلك التقنية . الكل يعلم أن إيقاع الحياة يتسم بالسرعة يوماً بعد يوم نتيجة للنقلة الحضارية والهائلة فى مجالات الإتصالات سواء كانت على صعيد الإتصالات الهاتفية أو الإتصالات الخلوية أو حتى الإتصالات عبر شبكات الإنترنت ، ونتيجة لتلك النقلة ظهرت العديد من التطبيقات والتقنيات العظيمة المنفعة فى مجال الإتصالات عبر شبكات الإنترنت وأهمها وهذه وجهة نظرى " تقنية نقل الصوت عبر بروتوكول الإنترنت أو فيما يعرف ب Voip " . تقنية الفويب هكذا تُنطق (voyp) تعنى نقل المحادثات الصوتية بإستخدام شبكة الإنترنت عن طريق توجيه تلك المحادثات الصوتية شأنها شأن الحزم العادية أو ال Packets وبالتالى لا يقتصر الأمر على شبكات الإنترنت أو Internet Networks بل يمكن إستخدام تلك التقنية داخل أى شبكة تستخدم بروتوكول الإنترنت والتى تعرف ب IP-Based Networks ، وبالتالى يتم التعامل مع المحادثات الصوتية على أنها حزم يتم نقلها بإحدى بروتوكولات النقل الشهيرة وأشهرها TCP و UDP وحينها لا تستطيع طبقات الشبكة المختلفة أو Network Layers التفرقة بين حزم البيانات و الحزم الصوتية . ولكن قد يستغرب البعض ما الفائدة التى تعود علينا من تقنية ال voip ؟ للإجابة على ذلك التساؤل ومعذرة قد تكون الإجابة غير واضحة المعالم لمن ليست لهم دراية بالإتصالات الهاتفية ، تخيل معى السيناريو الإفتراضى لشبكات الهاتف العامة أو فيما تعرف بال PSTN فحينما يريد مستخدم ما على تلك الشبكة الإتصال بمستخدم آخر يحدث التالى : فى البداية حينما يريد المستخدم A أن يهاتف المستخدم B بإستخدام ال PSTN تقوم شبكة الهاتف أولا ًبعمل إنشاء للإتصال قبل بدء المحادثة ثم بعد ذلك تقوم الشبكة بحجز مسار محدد لكل من المستخدم A و B لإجراء المكالمة ، وبالتالى كلما أراد المستخدم A محادثة المستخدم B أو العكس ستقوم شبكة الهاتف بحجز نفس المسار لكى تتم عملية الإتصال بشكل سليم وبذلك دائماً يتم حجز ذلك المسار بنفس السعة والموارد للمستخدم A حتى فى حالة عدم احتياجه لذلك المسار فى وقت ما ، فمثلا ًقد يحتاج المستخدم A ذلك المسار بالنهار فقط ولا يقوم بإستخدامه بالليل وبالتالى يتم حجز الموارد الخاصة بالمستخدم A له فقط ولا يتم الإستفادة منها ف أضرب مثالاً عملياً على ذلك : نفترض أنه يوجد لديك حيز اتساع أو Bandwidth مثلا واحد ميجا ، ولديك عشرة مستخدمين فكيف يمكن تقسيم ذلك الحيز الإتساعى على كل من المستخدمين فى شبكات الهاتف العادى أو PSTN وشبكات الإنترنت ؟ أولا ً: بالنسبة لشبكات الهاتف العادى أو ال PSTN سنقوم بتقسمة ذلك الحيز الترددى وهو 1 ميجا على العشرة مستخدمين وبالتالى يكون نصيب الفرد الواحد من مورد الشبكة هو 100 كليو وتكون تلك ال 100 كيلو هى نصيب الفرد على الدوام لا يستطيع أن يأخد أكثر أو أقل منها ، وإحتمال إستخدام العشرة مستخدمين لمواردهم المحجوزة لهم فى وقت واحد صعب جدا ولنفترض أن واحدا من هؤلاء العشرة هو المستخدم لموارده فقط وباقى المستخدمين غير موجودين ؟ معنى ذلك أن نسبة 90% من موارد الشبكة محجوزة بدون فائدة ولا يمكن إستخدامها . ثانيا : شبكات الإنترنت أو أى شبكة تستخدم بروتوكول الإنترنت إذا كان الحيز الإتساع 1 ميجا فيتم مشاركة تلك الواحد ميجا بين المستخدمين العشرة وذلك أن إحتمال دخول المستخدمين العشرة فى نفس الوقت صعب جداً ويصل إلى نسبة ضئيلة أيضاً ، ولنفترض أنه يوجد مستخدم واحد من العشرة موجود online فسيكون بإمكانه التمتع بالحيز الإتساعى أو ال Bandwidth بالكامل فى حال عدم إستخدامه من قِبل المستخدمين الآخرين وذلك أن شبكات الإنترنت تعمل بمدأ المورد عند الطلب أو Resources on Demand . طبعا المقارنة البسيطة التى قمت بسردها فى السطور السابقة ما هى إلا مجرد نقطة فى بحر من المقارنات التى تتم بين كل من مؤيدى شبكات الإتصال الهاتفية أو Circuit-Switched Networks وبين شبكات الإنترنت أو Packet-Switched Networks . وبالتالى نظراً لأن تقنية الفويب تعمد فى طبيعة عملها على إستخدام الشبكات التى تعمل ببروتوكول الإنترنت فإنها تتمع بنفس ميزة المورد عند الطلب أو Resource on Demand ، وهنا نستيطع إستخدام الحيز الإتساعى بشكل فعال وأكثر كفاءة من شبكات الهاتف العادى أو ال PSTN . كما تتميز تقنية الفويب أيضا بخاصية مهمة جدا ًوهى رخص التكلفة ! نعم فتخيل كل ما تحتاجه مثلا لعمل voip-server لا يتعدى كونه وجود جهاز حاسب لديك مع بعض البرامج مفتوحة المصدر والمجانية أى دون مقابل مالى ، كذلك البنية التحتية للتقنية موجودة فعلا ولا نحتاج إلى موارد إضافية. أعلم أن تلك المقدمة بسيطة جداً فى التعريف بمفاهيم كثيرة ذكرتها ولكن فعلاً إعذرونى فكل مصطلح قد يحتاج إلى موضوع كامل وسنخرج عن صلب الموضوع فأرجو المعذرة منكم . ندخل الآن فى صلب الموضوع ماذا نحتاج لكى نتمكن من إستخدام تلك التقنية ؟ أولا ًبشكل أو بآخر قد تكون مستخدم لتلك التقنية وأنت لا تشعر ! نعم فبرامج المحادثة الصوتية والكتابية مثل msn messenger , skype , yahoo وغيرها من تلك البرامج والتى تعتمد فى طريقة عمل المحادثات الصوتية الخاصة بها على تقنية voip لكن مع أختلاف البروتوكولات المستخدمة . لذا ماهو الجديد فى موضوعنا ؟ سؤال يستحق الإجابة فعلا ! الجديد فى الموضوع أنك ستتمكن بنفسك من عمل خادم فويب أو voip-server خاص بك دون الحاجة إلى الآخرين والفائدة التى ستعود عليك من ذلك أنه سيكون لديك عدة ميزات هائلة منها : 1- سيكون لديك مقسم هاتف داخلى مُعتمداً على بروتوكول الإنترنت أو فيما يعرف ب IP PBX 2- تستطيع ربط خادم الفويب الخاص بك بشبكة الهاتف العادى أو PSTN 3- تستطيع عمل محادثات صوت وصورة بين المشتركين فى الخادم الخاص بك 4- تستطيع عمل المحادثات الكتابية إلى جانب إستخدام خدمة البريد الصوتى , خدمة الإجتماعات أو conference , خدمة الأعلانات أو Announcements .... ملحوظة : بعض من الخدمات السابقة تحتاج إلى أكثر من تطبيق لكن تحصل عليها ، فوجود OpenSER فقط لا يكفى لتزويد تلك الخدمات . تلك كانت بعض الميزات القليلة والتى سوف تتمكن من الحصول عليها فى حالة إمتلاكك لخادم فويب خاص . وقد يفرض سؤالا ً آخراً نفسه ما هى المتطلبات اللازمة لعمل خادم الفويب ؟ كل ما تحتاجه لتنفيذ الأمور التى نحن بصدد الحديث عنها فى موضوعنا هو مجرد وجود جهاز حاسب وبعض البرامج التى سوف نقوم بتحميلها من على الإنترنت ، ويفضل أن يكون الحاسب لديك ذو إمكانيات معقولة ليست بالكبيرة التى تكلفك المال الكثير ولا بالقليلة والتى قد تسبب لك شللاً نصفيا نتيجة البطىء فى التعامل مع الجهاز ! خطة العمل : لنناقش سويا خطة العمل والتى سوف نقوم بتنفيذها والمطلوب منك إنجازه وسأقوم بسرد عدة نقاط رئيسية : أولا : هل لديك شبكة حاسب داخلية وتود الربط بين تلك الأجهزة لكى تستطيع عمل مكالمات داخلية (مثال سنترال داخلى)؟ ثانيا : هل يوجد لدين نطاق أو Domain خاص بك وتريد عمل خادم فويب لكى تقوم بالربط بين مجموعة من المشتركين ؟ ثالثا : هل تنوى الربط مع شبكات الهاتف العادى أو ال PTSN لكى تتمكن من الإتصال بالهواتف العادية سواء كانت داخل نطاق البلد أو سواء كانت على نطاق عدة دول ؟ فى البداية لكل خطة ذكرتها سابقاً الإعدادات الخاصة بها ولكن سيوجد قاسم مشترك فى الإعدادات بين تلك الخطط فمثلاً الخطة الأولى ستتمكن من خلالها إذا كنت تعمل فى شركة تحتوى على عدد من الموظفين وهؤلاء الموظفين يعملون على حواسيب مرتبطة بشبكة أن تمتلك مقسم هاتف داخلى مماثل تماما للجهاز الذى يوجد داخل الشركة الخاصة بك وسيمكنك الآن أن تخبر رئيسك فى العمل أنكم بعد اليوم لن تحتاجوا إلى ذلك الجهاز ( مكانه فى ال Trash ) . ملحوظة : الشركات الكبيرة ليست بحاجة إلى تغيير السنترال الموجود لديها والبنية التحتية لهذا السنترال, بوجود IP PBX الشركات الكبيرة ممكن أن تحتفظ حتى بالأرقام الداخلية للتحويلات, وبإستخدام ال IP PBX سيتم تحويل المكالمات الداخلية من خلال الشبكة داخل الشركة وتسمح للمستخدمين بمشاركة نفس التحويلات الداخلية القديمة بالشركة مع الخطوط الخارجية. فى الخطة الثانية إذا كنت تمتلك domain خاص بك وتريد توسعة الأمر لربط عدة مستخدمين داخل عدة دول مختلفة فحينها ستحتاج بعض الإعدادات الإضافية وبعض الأمور والتى ستقوم بوضعها فى الحسبان نتيجة قدومك على ذلك الأمر . أما أخيراً وبالنسبة للخطة الثالثة وهى الربط مع شبكات الهاتف العادى فحينها ستحتاج إلى بعض العتاد الإضافى ، وأعنى بالعتاد الإضافى أن تمتلك PSTN Gateway لكن تتمكن من الربط مع ال PSTN . لذا سيكون محور الحديث فى موضوعنا عن كيفية تنفيذ الخطة الأولى والثانية والتى قد يكون كثير منا يمتلك المقومات الخاصة بها أما الخطة الثالثة فنظرا لكونها تتطلب بعض التكلفة لن نتطرق إليها . خادمات الفويب (برمجيات حرة ) برامج خادمات الفويب كثيرة جداً منها ماهو تجارى وبمبالغ مالية ومنها ماهو مجانى مفتوح المصدر ، أشهر خادمات الفويب المجانية والمفتوحة المصدر هو Asterisk يليها خادم إسمه OpenSER ، وإن شاء الله سيكون محور حديثنا هو OpenSER خلال السطور القادمة وكما ذكرت سيكون الكلام عملى أكثر منه نظرى نظراً لأن الموضوع متشعب وكل مصطلح يحتاج إلى فقرات لشرحه ، وبالتالى نريد عمل خادم الفويب خطوة بخطوة كى يتمكن الفرد العادى من إنشاء خادم يخصه سواء داخل LAN أو على مستوى النطاقات العامة أو Public Domains . لكن قد يتسائل البعض ماهى أوجه الإختلاف بين خادمات الفويب مثلا OpenSER وبين Asterisk ؟ فى الحقيقة بالنسبة للمستخدم العادى قد لا يشكل الفرق عاملا مهما بالنسبة لديه ، أما على صعيد مزودى خدمة الفويب فسيكون الفارق كبير جدا ومهم فى نفس الوقت ، لان متطلبات الخدمة وتنفيذها ستتوقف على عدة عوامل منها : 1- عدد المستخدمين الذين سوف نقوم بتزوديدهم الخدمة . 2- الخدمات المطلوب توفيرها للمستخدمين . 3- نوعية البروتوكولات المستخدمة (سأتحدث عن بعضها لاحقاً) هذه العوامل الثلاث هى الركائز الأساسية التى ينبغى وضعها فى عين الاعتبار عند اختيار خادم الفويب ، لذا ينبغى عدم اهمال اين منها حتى لا تحدث مشاكل بعد ذلك قد تؤدى إلى فشل الخدمة من الأساس . وكما ذكرت سابقاً توجد العديد من البرمجيات الحرة التى تقدم خدمة الفويب بأشكال عديدة اخترت منها OpenSER لعدة عوامل هى : 1- كفاءة البرنامج فى تغطية عدد مهول من المستخدمين دون القلق بشأن الأداء . 2- مرونة البرنامج فى استخدامه فى عمل اشكال عديدة للخدمات حيث تستطيع استخدامه ك xmpp server ، presence server بجانب توفيره لخدمات الفويب المطلوبة دون أى مشكلة . 3-سهولة تثبيت البرنامج على اكثر من نظام تشغيل مختلف نظرا لكون الشفرة المصدرية للبرنامج مبرمجة بلغة C . 4- سهولة إنشاء تطبيقات مختلفة لتكون مكملة لعمل البرنامج بأى لغة برمجة أخرى عن طريق عمل modules لها ، مثل java , perl . 5- اعتماد OpenSER فى طريقة عمله على بروتوكل بدء الجلسة (SIP) والذى يعتبر فى وقتنا الحالى أهم البروتوكولات المستخدمة لتوفير خدمات نقل الصوت . هذه كانت بعض ميزات OpenSER التى ستحصل عليها باستخدامك له ، وحينما تستخدمه بشكل فعلى ستكتشف المزيد من الأسرار التى لا تتوقعها جعلت من OpenSER محل اهتمام كبرى شركات الشبكات (Cisco) ليعمل على احدى منصات خادمات الفويب لديها وهى سلسلة Cisco Service Node for Linksys one . بروتوكول بدء الجلسة SIP : حينما يتبادر إلى الأذهان كلمة بروتوكول فالبعض يشعر بالاشمئزاز نتيجة لسماع تلك الكلمة ، فأصعب ما يمكن فهمه حينما نعتمد فى عملنا على بروتوكول معين هو فهم طبيعة البروتوكول وكيف يعمل ، قد يكون الأمر فى البداية صحيحا لكن مع التعود على فهم البروتوكول وكيفية عمله سندرك أن الأمر بسيط جدا ولا يعدو كونه لغة تخاطب بين حاسبين على الشبكة كل ما عليك حينها هو فهم تلك اللغة واتقانها كى تتمكن انت من الحديث بها أيضا !! كما ذكرنا سابقا أن بروتوكول بدء الجلسة (SIP) هو احد البروتوكولات المسيطرة حاليا على سوق تقنية الفويب ، حيث يعمل البروتوكول بشكل فعلى داخل العديد من التطبيقات التى تستخدمه سواء كانت خادمات أو مستخدمين (clients) ، وبالتالى يستقطت البروتوكول شريحة واسعة من قطاع مزودى خدمة الفويب أو على مستوى المستخدمين على حد سواء . ترمز كلمة SIP إلى الكلمات الإنجليزية الثلات Session Initiation Protocol أى بروتوكول بدء الجلسة ، تم تطويره من قبل منظمة IETF ، تم توصيفه فى عدة مستندات مختلفة ، المستند الرئيسى يحمل الرقم RFC3261 والذى يمثل الإصدار رقم اثنان من البروتوكول أو SIP/2.0 . بروتوكول بدء الجلسة SIP يعمل بشكل أساسى فى طبقة التطبيقات فى نموذج الشبكات TCP/IP أو التى تعرف ب Layer 1 والتى تحمل الإسم Application Layer ، وظيفة البروتوكول ببساطة هى إنشاء وتعديل وإنهاء الجلسات أو المكالمات الصوتية . الجلسات (Sessions) قد تكون عبارة عن خدمة اجتماعات (Conference) , تعليم إلكترونى (E-Learning) أو محادثات كتابية (Instant Messaging) . طريقة عمل بروتوكول بدء الجلسة SIP تشبه فى طريقة عمل بروتوكول HTTP ، اى يعتمد بشكل أساسى فى بدء الجلسة أو إنهائها فى صورة رسائل نصية . يستطيع بروتوكول بدء الجلسة SIP توفير خمس خصائص أساسية لإنشاء وإنهاء المكالمات الصوتية وهى : 1- أماكن المستخدمين (User Locations) : حيث يستطيع البروتوكول تحديد أماكن المستخدمين بشكل فعال وتحديد ماهية أماكنهم بالضبط عن طريق عناوين الإنترنت الخاصة (Internet Addresses) إلى جانب المنافذ التى يستخدمونها (Ports) . 2- متغيرات المستخدمين (User Parameters Negotiation) : وهى تعبر عن عدد من المتغيرات تستخدم لتوصيف جلسة المكالمة كمثلا نوع الكوديك المُستخدم لتقسيم الصوت التماثلى إلى بيانات رقمية . 3- تواجد المستخدمين (User Availability): امكانية تحديد وجود المستخدمين (online) من عدمه لبدء المكالمة . 4- إنشاء المكالمات Call Establishment: هذه الخاصية تعبر عن المتغيرات اللازمة والمطلوبة لإنشاء وبدء المكالمة لكل من المُتصِل والمتصل به لإعلام كلا منهما أن المكالمة فى طريقها للبدء (كمثال رنين الهاتف لدى المتصل به(Ringing) , رنين الهاتف لدى المتصل (Ringback)). 5- ادارة المكالمة Call Management: تعبر هذه الخاصية عن عمل العديد من الخصائص أثناء إنشاء المكالة وكمثال على ذلك تحويل المكالمة إلى رقم آخر (Call Transfer) , رفض المكالمة (Call Rejection) أو إنهاء المكالمة . تم تطوير بروتوكول بدء الجلسة SIP بجانب مجموعة من البروتوكولات الأساسية التى تمثل الهيكل الأساسى لتقنيات الوسائط المتعددة(Multimedia Architecture) ، من ضمن تلك البروتوكولات RVSP, RTP , RTSP وفى الأخير بروتوكول توصيف الجلسة SDP أو الذى يرمز إلى Session Description Protocol ، لكن على الرغم من ضرورة تواجد احدى تلك البروتوكولات فى مرحلة ما أثناء إنشاء المكالمة إلا أن بروتوكول بدء الجلسة SIP لا يعتمد على أين منها لكل يعمل . هذه كانت نبذة بسيطة عن البروتوكول ،لكن إن أحيانا الله قد أتطرق فى القريب إلى بعض الأساسيات المهمة التى يجب أن نفهمها ونعيها جدا بخصوص البروتوكول . الآن سنبدأ فى تطبيق الجانب العملى من الموضوع وسيكون مقسم على عدة مراحل : 1- تثبيت OpenSER من الشفرة المصدرية على توزيعة ديبيان جنو/لينوكس الإصدار الرابع اتش (Debian Gnu/Linux etch 4.0) . 2- ضبط OpenSER للعمل مع محرك قواع البيانات MySQL . 3- تثبيت تطبيق serMyAdmin لإدارة المستخدمين من خلال واجهة رسومية . المرحلة الأولى : تثبيت OpenSER على توزيعة Debian Gnu/Linux بعض الأمور أفترضها : * توجد لديك توزيعة Debian Gnu/Linux مثبتة بالفعل وعملية الشرح ستكون عليها . * معرفة كيفية التعامل مع الحزم من إضافة وتثبيت على التوزيعة ، وأود الإشارة إلى أنه فى حالة قيام أى شخص بتنفيذ الشرح على أى توزيعة أخرى وحدثت معه مشاكل فأنا غير ملزم بذلك سواء كانت هذه المشاكل هى عدم توافر حزمة معينة أو حدوث مشكلة أثناء تنفيذ إحدى الخطوات فى عملية ال compiling إلخ . السطور السابقة تناولنا فيها مقدمة بسيطة عن الفويب (voip) وشرحنا فى تلك المقدمة ما معنى كلمة voip وما الفائدة التى قد تعود علينا من إستخدام تلك التنقبية إلى آخره من تلك المفاهيم ، فى هذا الجزء إن شاء الله سنبدأ فى تثبيت خادم الفويب وستكون عملية التثبيت على توزيعة Debian ومن أراد تثبيت OpenSER على أى توزيعة أخرى فسأذكر بعض النقاط الرئيسية والتى تمكنه من تثبيت الخادم بدون أى مشاكل إن شاء الله . متطلبات الثبيت (هذه تخص كل التوزيعات ) : - gcc - bison - flex - GNU make - sed and tr (used in Makefiles) - GNU tar - GNU install - libmysqlclient ملحوظة : متطلبات التثبيت هذه تكفى فقط بوجود دعم لتوثيق المستخدمين على OpenSER بإستخدام MySQL ، توجد متطلبات أخرى إذا كنت تريد إضافة مهام أكثر ليقوم بها OpenSER ، وجدير بالذكر أن أسماء الحزم السابقة هى أسماء الحزم بشكل عام . كما أننى أفترض أنك قمت بتعديل ملف ال sources.list الخاص بك على التوزيعة ، وإذا لم تكن قد فعلت فهاهى الطريقة : فى البداية قم بفتح محاكى الطرفية لديك أو Terminal ، بعد ذلك قم بالدخول بحساب المستخدم الجذر ونفذ الأمر التالى : nano /etc/apt/sources.list بعد ذلك قم بإضافة المصادر التالية إذا لم تكن موجودة عندك : deb http://http.us.debian.org/debian etch main deb-src http://http.us.debian.org/debian etch main ملحوظة : من الممكن أن تستخدم أى مُحرر نصوص آخر بدلا ًمن nano ، البعض يُفضل vi أو Vim اختر ما يناسبك أو ما تستطيع إستخدامه . بعد ذلك قم بتنفيذ الأمر التالى لتحديث ملف المصادر sources.list لديك بالشكل التالى : debian:~# apt-get update افتراضي المرحلة الأولى : تثبيت OpenSER على توزيعة Debian Gnu/Linux بعض الأمور أفترضها : * توجد لديك توزيعة Debian Gnu/Linux مثبتة بالفعل وعملية الشرح ستكون عليها . * معرفة كيفية التعامل مع الحزم من إضافة وتثبيت على التوزيعة ، وأود الإشارة إلى أنه فى حالة قيام أى شخص بتنفيذ الشرح على أى توزيعة أخرى وحدثت معه مشاكل فأنا غير ملزم بذلك سواء كانت هذه المشاكل هى عدم توافر حزمة معينة أو حدوث مشكلة أثناء تنفيذ إحدى الخطوات فى عملية ال compiling إلخ . السطور السابقة تناولنا فيها مقدمة بسيطة عن الفويب (voip) وشرحنا فى تلك المقدمة ما معنى كلمة voip وما الفائدة التى قد تعود علينا من إستخدام تلك التنقبية إلى آخره من تلك المفاهيم ، فى هذا الجزء إن شاء الله سنبدأ فى تثبيت خادم الفويب وستكون عملية التثبيت على توزيعة Debian ومن أراد تثبيت OpenSER على أى توزيعة أخرى فسأذكر بعض النقاط الرئيسية والتى تمكنه من تثبيت الخادم بدون أى مشاكل إن شاء الله . متطلبات الثبيت (هذه تخص كل التوزيعات ) : كود PHP: - gcc - bison - flex - GNU make - sed and tr (used in Makefiles) - GNU tar - GNU install - libmysqlclient ملحوظة : متطلبات التثبيت هذه تكفى فقط بوجود دعم لتوثيق المستخدمين على OpenSER بإستخدام MySQL ، توجد متطلبات أخرى إذا كنت تريد إضافة مهام أكثر ليقوم بها OpenSER ، وجدير بالذكر أن أسماء الحزم السابقة هى أسماء الحزم بشكل عام . كما أننى أفترض أنك قمت بتعديل ملف ال sources.list الخاص بك على التوزيعة ، وإذا لم تكن قد فعلت فهاهى الطريقة : فى البداية قم بفتح محاكى الطرفية لديك أو Terminal ، بعد ذلك قم بالدخول بحساب المستخدم الجذر ونفذ الأمر التالى : كود PHP: nano /etc/apt/sources.list بعد ذلك قم بإضافة المصادر التالية إذا لم تكن موجودة عندك : deb http://http.us.debian.org/debian etch main deb-src http://http.us.debian.org/debian etch main ملحوظة : من الممكن أن تستخدم أى مُحرر نصوص آخر بدلا ًمن nano ، البعض يُفضل vi أو Vim اختر ما يناسبك أو ما تستطيع إستخدامه . بعد ذلك قم بتنفيذ الأمر التالى لتحديث ملف المصادر sources.list لديك بالشكل التالى : debian:~# apt-get update الآن سنقوم بتثبيت الحزم التى ذكرناها سابقا من خلال apt-get بالشكل التالى : debian:~# apt-get install gcc bison flex make libmysqlclinet15-dev mysql-server mysql-client ملحوظة : قد توجد لديك بعض من تلك الحزم السابقة ولكنى أفترض أن تلك الحزم غير موجودة ، وبالتالى إذا وُجدت الحزم فعلاً وكانت هناك إصدارات حديثة منها سيتم عمل ترقية لتلك الحزم ، والتى لم تكن موجودة سيتم تثبيتها . بعد التأكد من تثبيت الحزم السابقة على التوزيعة سنقوم الآن بتحميل OpenSER من على الإنترنت ثم نقوم بتثبيته ونبدأ بخطوة التحميل أولاً : نقوم بالولوج إلى المسار usr/src/ ، ثم نقوم بتنزيل الملف بالشكل التالى : debian:~# cd /usr/src/; wget -c http://www.kamailio.org/pub/kamailio/1.3.3/src/openser-1.3.3-notls_src.tar.gz بعد ذلك نقوم بفك الضغط عن الملف : debian:/usr/src# tar -zxf openser-1.3.3-notls_src.tar.gz ثم نقوم بحذف الملف المصدر لأنه لم يعد له قيمة (الخيار متروك لك) : debian:/usr/src# rm openser-1.3.3-notls_src.tar.gz الآن نقوم بالولوج إلى المجلد الذى يحتوى الشفرة المصدرية ل OpenSER : debian:/usr/src# cd openser-1.3.3-notls بعد ذلك سنقوم بعمل بعض التعديلات على ملف Makefile لإضافة الmodule الذى سوف يكون حلقة الوصل بين OpenSER وبين محرك قواعد البيانات MySQL بالشكل التالى : debian:/usr/src/openser-1.3.3-notls# nano Makefile بعد ذلك نقوم بالبحث عن السطر الذى توجد فيه كلمة mysql بالشكل التالى : exclude_modules?= jabber cpl-c mysql pa postgres osp unixodbc ثم نقوم بحذف كلمة mysql ليصبح السطر بالشكل التالى : exclude_modules?= jabber cpl-c pa postgres osp unixodbc بعد ذلك سنبدأ فى تجميع الشفرة المصدرية الخاصة ب OpenSER أو فيما تُسمى ب OpenSER Compiling : debian:/usr/src/openser-1.3.3-notls# make prefix=/ all ثم نقوم بتثبيت الملفات التى تم عمل لها عملية التجميع من الشفرة المصدرية بالشكل التالى : debian:/usr/src/openser-1.3.3-notls# make prefix=/ install بعد ذلك نقوم بإنشاء مجلد جديد على المسار var/run/ لكى نضبط المسار الخاص بملف رقم العملية ل OpenSER : debian:~# mkdir /var/run/openser انتهت عملية التثبيت بنجاح وأصبح لديك خادم الفويب OpenSER على التوزيعة , الخطوة القادمة هى وضع OpenSER كعملية يتم تشغليها أثناء إقلاع Debian Gnu/Linux ونبدأ على الفور بتنفيذ التالى من محاكى الطرفية : debian:~# cd /usr/src/openser-1.3.3-notls/packaging/debian debian:/usr/src/openser-1.3.3-notls/packaging/debian# cp openser.default /etc/default/openser debian:/usr/src/openser-1.3.3-notls/packaging/debian# cp openser.init /etc/init.d/openser; cd debian:/usr/src/openser-1.3.3-notls/packaging/debian# cp openser.init /etc/init.d/openser; cd debian:~# update-rc.d openser defaults 99 بعد ذلك قم بالتعديل على ملف OpenSER.cfg والذى يمثل ملف الاعدادت الرئيسى وقم بالبحث عن كلا من السطر fork=no# ثم نقوم بحذفه ، بعد ذلك نقوم بمنح الملف OpenSER على المسار etc/init.d/ التصاريح اللازمة للتنفيذ بالشكل التالى : debian:~# chmod 755 /etc/init.d/OpenSER بعد ذلك نقوم بالتعديل على ذلك الملف لتعديل المسار الذى يوجد به الملف الرئيسى للسيرفر ويكون ذلك بالشكل التالى : debian:~# nano /etc/init.d/OpenSER نقوم بالبحث عن السطر : DAEMON=/usr/sbin/OpenSER ليصبح بالشكل التالى : DAEMON=/sbin/OpenSER أخيرا نقوم بالتعديل على الملف OpenSER الموجود على المسار etc/default/ لتعديل اسم المستخدم المجموعة اللذان سيكون لهم الحق فى تشغيل السيرفر أثناء عملية الإقلاع مع ضبط بعض الخيارات الأخرى لتكون بالشكل التالى : debian:~# nano /etc/default/OpenSER ونقوم بتعديل القيم التالية لتصبح بالشكل التالى : RUN_OPENSER=yes MEMORY=128 USER=the_user_you_want GROUP=the_group_you_want بعد أن ننتهى من ضبط تلك الإعدادات نحفظ التغييرات التى اجريناها ثم نقوم بعمل إعادة تشغيل للتوزيعة لنتأكد من أن كل شىء أصبح على ما يرام ولا توجد هناك أى مشكلة وبعد بدء التشغيل مرة أخرى تستطيع التأكيد من أن OpenSER يعمل فعليا باستخدام الأمر ps بالشكل التالى : debian:~# ps aux | grep openser الآن سنتطرق إلى كيفية ضبط اعدادات السيرفر وكيفية التعديل على ملف الاعدادات الرئيسى ، لكن فى البداية سوف أتطرق إلى شرح بعض المفاهيم التى قد تلتبس لدى البعض : أولا : OpenSER وإعتماده على مبدأ " واحد للكل والكل لواحد " !! أعتقد أن البعض قد بدأ يفكر هل جننت ؟؟ !! ، لا ليس بعد D: ، ما أقصده من العبارة السابقة نقطة مهمة تخص خادم الفويب OpenSER وهى كيف تم إنشاء OpenSER ليعمل خادماً للفويب ، بمعنى OpenSER فى حد ذاته كحزمة أو برنامج لا تتعدى مساحته كأكواد برمجية حاجز ال 1000 كيلو بايت !! معقول ؟ لكن هل ذلك البرنامج أو الحزمة تستطيع عمل كل الوظائف التى ذكرتها سابقاً فى بداية موضوعنا؟ بالقطع لا ! خادم الفويب OpenSER كحزمة لا يستطيع فعل أى شىء على الإطلاق ، لكن الفكرة العبقرية هنا والتى هى جزء من سبب انتشاره هى اعتماده على نماذج خارجية أو External Modules تقوم بالربط بين OpenSER والبرامج المختلفة ، فعلى سبيل المثال نريد أن نستخدم OpenSER مع نظام إدارة قواعد البيانات MySQL هنا يأتى دور النموذج mysql.so والذى تكون مهمته الرئيسية عمل الإتصالات اللازمة مع MySQL وهكذا قيس الأمر على نفس هذا المنوال حينما تريد مثلا أن تقوم بربط برنامج خارجى مع OpenSER تقوم ببناء Module يقوم بدور الوسيط بين ذلك البرنامج وبين OpenSER . ملحوظة : بعض ال External Modules تكون معتمدة على بعضها البعض بشكل أو بآخر فتنبه لتلك النقطة لأننا سوف نحتاج إليها لاحقاً . إذا السؤال الذى يفرض نفسه علينا الآن كيف نقوم مثلا بإضافة نموذج خارجى جديد أو New External Module لخادم الفويب OpenSER أو قد نطرح السؤال بشكل آخر هل يوجد ل OpenSER ملف معين يتم التعديل من خلاله على خصائص OpenSER لإضافة أو حذف External Module معين ؟ نعم ، لدى OpenSER ملف ضبط الإعدادات الخاصة ويدعى OpenSER.cfg وهذا الملف هو الملف الرئيسى أو العقل المدبر ل OpenSER وبدونه OpenSER لا يساوى شيئاً ، فمثلاً عند تشغيل OpenSER يقوم أولا بفحص ملف الإعدادات OpenSER.cfg ليتأكد من صحة وضع الإعدادات بشكل سليم ، كما يتأكد من النماذج الخارجية المُضافة ليقوم بتحميلها أو لا ، وبالتالى نستطيع القول بأن OpenSER بدون OpenSER.cfg يكون عديم القيمة ولا فائدة منه . تشغيل OpenSER اثناء إقلاع Debian الملف OpenSER.cfg يتم إنشاؤه بشكل إفتراضى بعد الإنتهاء من تثبيت OpenSER وقبل الشروع فى التعديل على الملف سنقوم ببعض الخطوات الإضافية لكى نستعمل OpenSER دون أى مشاكل ونبدأ أولا بتعريف SIP_DOMAIN للجهاز الذى سوف تم تثبيت OpenSER عليه كما يلى : debian:~# export SIP_DOMAIN='localhost' ملحوظة : فى كل مرة سوف نحتاج إلى عمل export لل SIP_DOMAIN فى حال إعادة تشغيل الجهاز ولذا سوف نقوم بإضافة الأمر export داخل ملف bashrc. والذى يكون داخل مجلد ال home directory بإسم المستخدم الخاص بك وتستطيع الوصول إليه بالشكل التالى : debian:~# nano ~/.bashrc بعد ذلك قم بإضافة هذا السطر فى آخر الملف : export SIP_DOMAIN='localhost or mydomain.domain.com' أو تستطيع عمل ذلك مباشرة بإستخدام echo بالشكل التالى : echo "export SIP_DOMAIN='localhost' " >> ~/.bashrc ثم قم بحفظ الملف وبعدها لن نحتاج إلى عمل export لل SIP_DOMAIN مرة أخرى . ملحوظة : يمكنك وضع النطاق الخاص بك مكان كلمة localhost إذا كنت تمتلك احدى النطاقات وذلك لربط عدة مستخدمين على مستوى الشبكة واسعة النطاق (WAN). المرحلة الثانية : OpenSER with MySQL Support الآن سنبدأ فى تجهيز MySQL للعمل مع OpenSER وذلك بإنشاء قاعدة بيانات خاصة ب OpenSER وسيكون ذلك من خلال التعديل على الملف openserctlrc على المسار etc/openser/ بالشكل التالى : debian:~# nano /etc/openser/openserctlrc بعد فتح الملف توجد عدة متغيرات تحدد بعض الأمور التى سنحتاجها أثناء على سبيل المثال منها : SIP_DOMAIN=your_domain DBENGINE=MYSQL DBHOST=localhost DBNAME=openser DBRWUSER=openser DBRWPW="openserrw" DBROUSER=openserro DBROPW=openserro DBROOTUSER="root" MD5="md5sum" AWK="awk" GREP="egrep" SED="sed" INSTALL_EXTRA_TABLES=no INSTALL_PRESENCE_TABLES=no INSTALL_SERWEB_TABLES=no STANDARD_MODULES="standard acc lcr domain group permissions registrar usrloc msilo alias_db uri_db speeddial avpops auth_db pdt dialog dispatcher" ALIASES_TYPE="DB" CTLENGINE="FIFO" OSER_FIFO="/tmp/openser_fifo" VERIFY_ACL VERBOSE=1 STORE_PLAINTEXT_PW=1 كما رأينا قم بتعديل المتغيرات السابقة كما وضعتها ، والآن سنقوم بعمل بعض التعديلات على محرك قواعد البيانات MySQL : أولا : سنقوم بوضع كلمة مرور للمستخدم الجذر root حتى وذلك لتوفير بعض النواحى الأمنية وعدم العبث بمحرك قاعدة البيانات من قبل أى شخص آخر على الشكل التالى : debian:~# mysqladmin -u root password "any_pass" ثانيا : قم بإنشاء قاعدة البيانات الخاصة ب OpenSER من خلال تنفيذ الملف openserdbctl على المسار sbin/ بالشكل التالى : debian:~# cd /sbin debian:/sbin# openserdbctl create ثالثا: سوف نبدأ سويا فى معرفة كيفية ضبط إعدادات OpenSER عن طريق الملف OpenSER.cfg والذى يكون موجود داخل المسار التالى : /etc/openser/openser.cfg ولتوفير بعض الوقت والجهد قمت بضبط ملف اعدادات كامل يتضمن اضافة دعم قواعد البيانات والتوثيق من خلالها بإستخدام محرك قواعد البيانات MySQL وتستطيع تحميل الملف من على الرابط : debian:~# cd /etc/openser; wget http://muhammad.akl.googlepages.com/auth-mysql.cfg بعد ذلك قم بنسخ الملف auth-mysql.cfg ليعمل بدلاً من الملف الحالى OpenSER.cfg بالشكل التالى : debian:/etc/openser# cp auth-mysql.cfg openser.cfg الآن سنقوم بالتعديل على الملف الجديد openser.cfg ونقوم بالبحث عن السطور التالية : debian:/etc/openser# nano openser.cfg وتحديدا الجملة التالية : listen= رقم الايبى الخاص بالسيرفر لديك أو جهازك الشخصى كذلك الجمل التالية فى نفس الملف : if (!www_authorize("", "subscriber")) { www_challenge("", "0"); ونضع مكان ال "" إسم النطاق الخاص بنا سواء كان على مستوى النطاق المحلى localhost أو نطاق عام public domain وبعد التعديل يكون الشكل النهائى : if (!www_authorize("localhost or yourdomain.domain.com", "subscriber")) { www_challenge("localhost or yourdomain.domain.com", "0"); لكن ينبغى التنبيه أن القيم المدخلة الخاصة بالنطاق لابد وأن تكون متطابقة مع القيمة التى قمنا بإعطائها للمتغير SIP_DOMAIN سابقا فلتتنبه لذلك . رابعا: الخطوة الرابعة تلك والأخيرة هى ضبط اعدادات الملف openserctlrc على المسار etc/openser/ بالشكل التالى : debian:/etc/openser# nano openserctlrc توجد بعض المتغيرات الأخرى التى سوف نقوم بتعديلها أيضا وتوفيرا للوقت والجهد مرة أخرى قمت بتوفير ملف معدل جاهز وتستطيع تحمليه من على الرابط : debian:/etc/openser# wget http://muhammad.akl.googlepages.com/openserctlrc بعد تحميل الملف سيكون اسمه openserctlrc.1 قم بنسخه مكان الملف الاصلى بالشكل التالى : debian:/etc/openser# cp openserctlrc.1 openserctlrc مع ملاحظة أنه يوجد داخل الملف متغير اسمه SIP_DOMAIN تأكد من ضبط قيمته أيضا لكى تتوافق مع القيم التى أدخلناها سابقا لذلك المتغيرات بأعلى . المرحلة الثالثة : تثبيت تطبيق الواجهة الرسومية serMyAdmin لإدارة OpenSER فى هذه المرحلة سنقوم بتثبيت خادم التطبيقات tomcat الاصدار السادس لكى نتمكن من تشغيل serMyAdmin بدون أى مشكلة وسنتبع الخطوات التالية دون تطلب ذلك مهارات او خبرة مسبقة مجرد فقط عمل نسخ ولصق للأوامر بشكل صحيح وستحصل على كل ما تريد دون اى مشكلة . أولا : تثبيت حزم الجافا فى البداية سنتأكد من وجود حزمة ال java6 على التوزيعة وذلك من خلال تنفيذ الأمر التالى : debian:~# java -version إذا كان ناتج الأمر بالشكل التالى فالحزمة مثبتة : java version "1.6.0_07" Java™ SE Runtime Environment (build 1.6.0_07-b06) Java HotSpot™ Client VM (build 10.0-b23, mixed mode, sharing) أما إذا لم يكن هناك ناتج للأمر فسوف نقوم بعمل بعض التعديلات على ملف sources.list أولا ومن ثمّ نقوم بإضافة المصادر التالية للملف : debian:~# echo "deb http://www.backports.org/debian etch-backports main non-free" >> /etc/apt/sources.list بعد ذلك نقوم بعمل تحديث للقائمة من خلال الأمر التالى : debian:~# apt-get update سنبدأ الآن فى تحميل حزمة الجافا من خلال الأمر التالى : debian:~# apt-get install sun-java6-jdk ملحوظة : أثناء عملية تثبيت سيتطلب ذلك منك الموافقة على رخصة الحزمة . أخيرا سنقوم بجعل ذلك الإصدار الذى قمنا بتثبيته هو الإصدار الإفتراضى الفعال على التوزيعة من خلال الأمر التالى : debian:~# update-java-alternatives -s java-6-sun بعد انتهاء عملية التثبيت سنقوم بعمل بعض التجهيزات الاختيارية لضمان عمل حزمة tomcat بشكل فعال دون اى مشكلة ونبدأ مع إنشاء مستخدم جديد لتشغيل الحزمة دون المستخدم الجذر : debian:~# adduser tomcat بعد تنفيذ الأمر سيتطلب ذلك منك ادخال كلمة مرور خاصة بالمستخدم الجديد ادخلها وتأكد من مطابقتها للمرة الأولى الخطوة الثانية : تحميل وتثبيت tomcat الاصدار السادس على التوزيعة فى البداية سنقوم بتحميل مصدر التطبيق من على الانترنت وذلك من خلال الموقع الخاص بالتبطبيق : http://tomcat.apache.org/download-60.cgi وتوفيرا لبعض الوقت نفذ الأوامر التالية : debian:~# cd /usr/local debian:/usr/local# wget http://mirrors.uol.com.br/pub/apache/tomcat/tomcat-6/v6.0.16/bin/apache-tomcat-6.0.16.tar.gz debian:/usr/local# tar -zxf apache-tomcat-6.0.16.tar.gz debian:/usr/local# ln -s apache-tomcat-6.0.16 tomcat شرح الخطوات السابقة : أولا : قمنا فى البداية بالتحويل إلى المسار usr/local/ باستخدام الأمر cd لتثبيت التطبيق بداخله . ثانيا : قمنا بتحميل التطبيق من على الشبكة العنكبوتية باستخدام الأمر wget . ثالثا : قمنا بفك الضغط عن الملف باستخدام الأمر tar . رابعا : قمنا بتغيير المالك للمجلد apache-tomcat-6.0.16 باستخدام الأمر chown . خامسا : قمنا بعمل وصلة مرنة (soft link) من المجلد الأصلى apache-tomcat-6.0.16 تحت اسم tomcat . ملحوظة : الخطوة الخامسة غير مهمة إذا أردت استخدام المجلد apache-tomcat-6.0.16 مباشرة لكن لتسهيل الأمور قمنا بعمل الوصلة المرنة لكى نتعامل مع الوصله ذاتها والتى تشير إلى المجلد الأصلى ، كما أنه ستعود علينا فائدة من ذلك إذا أردنا بعد ذلك تحديث التطبيق باصدار مرقى دون أدنى مشكلة أثناء ضبط ملفات الإقلاع بشكل ذاتى للتطبيق وسنتطرق إلى ذلك لاحقا . الآن سنقوم باستخدام الحساب الجديد للمستخدم tomcat بالشكل التالى : debian:/usr/local# su - tomcat بعد ذلك سنقوم بضبط بعض متغيرات الطرفية لضبط المسارات الذى سوف يعمل من خلالها التطبيق بالشكل التالى : tomcat@debian:~$ echo "export JAVA_HOME=/usr/lib/jvm/java-6-sun/" >> .bashrc tomcat@debian:~$ echo 'export CLASSPATH="/usr/local/tomcat/lib/jsp-api.jar;/usr/local/tomcat/lib/servlet-api.jar"' >> .bashrc الآن أصبح كل شىء جاهز واصبح التطبيق tomcat جاهزا للعمل ولنتأكد من ذلك سنقوم بتنفيذ الأمر التالى : tomcat@debian:~$ sh /usr/local/tomcat/bin/startup.sh إذا رأيت الرسائل التالية فكل شىء أصبح على ما يرام : Using CATALINA_BASE: /usr/local/tomcat Using CATALINA_HOME: /usr/local/tomcat Using CATALINA_TMPDIR: /usr/local/tomcat/temp Using JRE_HOME: /usr والأن للتأكد من عمل خادم التطبيقات tomcat بشكل جيد قم بفتح متصفح الانترنت الخاص بك وفى خانة عنوان الانترنت قم بكتابة : http:// localhost:8080 إذا ظهرت لك الشاشة الإفتتاحية للتطبيق فهنيئا لك فقد أصبح كل شىء على مايرام . أما إذا أردنا غلق التطبيق فسيكون ذلك من خلال : tomcat@debian:~$ sh /usr/local/tomcat/bin/shutwon.sh الخطوة الثالثة : تشغيل التطبيق بشكل ذاتى أثناء عملية الإقلاع وصلنا إلى المرحلة الأخيرة من ضبط التطبيق والتى سوف نتناول فيها كيفية وضع التطبيق كعملية تعمل أثناء الإقلاع بشكل تلقائى دون الحاجة إلى عمل ذلك بشكل يدوى وذلك من خلال تحميل الاسكريبت التالى : debian:~# cd /etc/init.d; wget http://muhammad.akl.googlepages.com/tomcat بعد ذلك قم بإعطاء تصريح التفيذ للإسكريبت بالشكل التالى : debian:/etc/init.d# chmod +x tomcat ثم أخيرا نقوم بعمل وصلات مرنة من الإسكريبت داخل مستويات التشغيل المختلفة : debian:/etc/init.d# update-rc.d tomcat defaults 99 ستظهر عدة رسائل داخل محاكى الطرفية تفيد أن الإسكريبت تم نسخه داخل عدة مستويات للتشغيل . الآن نتأكد أخيرا من عمل الإسكريبت دون مشاكل بتنفيذ الأمر التالى : debian:~# /etc/init.d/tomcat start ثم تذهب مرة أخرى إلى المتصفح وتقوم بكتابة عنوان الموقع localhost:8080 ، إذا ظهرت الشاشة الإفتتحاية للتطبيق فهنيئا لك تثبيت التطبيق وعمله بنجاح . الآن بعد أن تأكدنا من ضبط خادم تطبيقات الجافا tomcat سنقوم بتحميل الdriver الخاص بمحرك قواعد البيانات MySQL لكى يتمكن serMyAdmin من الدخول إلى المحرك ليكون الdriver كحلقة الوصل بين التطبيق وبين MySQL ونستطيع تحميله من الرابط التالى : debian:~# cd /usr/src; wget *-c http://ftp.plusline.de/mysql/Downloads/Connector-J/mysql-connector-java-5.1.5.tar.gz بعد ذلك نقوم بفك الضغط عن الملف : debian:~# tar *zxf mysql-connector-java-5.1.5.tar.gz ثم أخيرا نقوم بنسخ ال driver للمسار usr/local/tomcat/lib/ : debian:~# cp mysql*-connector*-java*-5.1.5/mysql*-connector*-java*-5.1.5*-bin.jar /usr/local/tomcat/lib/ بعد نسخ ال driver سنقوم الآن بضبط الأعدادات للتطبيق داخل خادم التطبيقات tomcat حتى يتمكن التطبيق serMyAdmin من الدخول إلى محرك قواعد البيانات MySQL ، والتعديل سيكون من خلال الملف context.xml على المسار التالى : debian:~# nano /usr/local/tomcat/conf/context.xml بعد ذلك سنقوم بتفريغ الملف وإضافة السطور التالية : لاحظ الكود السابق يحتوى على المتغير username والمتغير password والذى سيتمكن serMyAdmin من الدخول إلى محرك قاعدة البيانات من خلالهما لذا الخطوة التالية هى منح التصاريح الكافية لذلك المستخدم داخل المحرك بالشكل التالى : debian:~# mysql -u root -p mysql بعد ذلك سنكون داخل محث الأوامر الخاص ب mysql ومن خلاله نقوم بتنفيذ الأمر التالى : mysql > grant all on openser.* to sermyadmin@'localhost' identified by 'secret'; 'secret'; أخيرا سنقوم بتحميل التطبيق serMyAdmin ووضعه داخل مجلد تطبيقات الويب الخاص بخادم التطبيقات tomcat بالشكل التالى : debian :~# cd /usr/src; wget http://heanet.dl.sourceforge.net/sourceforge/sermyadmin/serMyAdmin-BETA-1.0.war بعد ذلك سنقوم بنسخ التطبيق بالشكل التالى : debian:/usr/src# cp serMyAdmin-BETA-1.0.war /usr/loca/tomcat/webapps/serMyAdmin.war الآن قم بفتح التطبيق من خلال المتصفح بالشكل التالى : htttp://localhost:8080/serMyAdmin إذا رأيت رأيت واجهة الدخول للتطبيق أمامك تطلب منك إسم المستخدم وكلمة المرور فكل شىء أصبح على ما يرام الخطوة الأخيرة الباقية هى تعديل بعض الامور الأمنية داخل قاعدة البيانات openser وذلك وعمل إسم مستخدم وكلمة مرور للتطبيق بالشكل التالى : debian:/usr/src# wget http://www.sermyadmin.org/openser/openser.sql debian:~# mysql -u root openser